#!/usr/bin/env python
# -*- coding: utf-8; -*-

class BootstrapForm(object):
    """表单实例化时设置Bootstrap属性"""

    # 视频讲解中的讲师想通过自定义django模板输出来美化项目显示颜色的选择页面,
    # 1. 自定义 django 对 radio 选择器的样式渲染,见文件 forms/widgets.py 和 templates/widgets/ 
    # 2. 取消 bootstrap 对某些样式的配置, 利用下面这个黑名单列表
    bootstrap_class_exclude = []

    # 配合 bootstrap 表单美化设置 widget 属性 class 以及 placeholder避
    # 免在每个 RegisterForm 类属性由 Field 类实例化时重复设置 widget 属
    # 性.
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for name, field in self.fields.items():
            # 对于某些字段的 input 元素, 不做 bootstrap 美化
            if name in self.bootstrap_class_exclude:
                continue

            # field.widget.attrs['class'] = 'form-control'
            # 避免覆盖原有的类值，这里添加类
            old_class = field.widget.attrs.get('class', "")
            field.widget.attrs['class'] = '{} form-control'.format(old_class)
            field.widget.attrs['placeholder'] = '请输入{}'.format(field.label)
